package com.house.contract;

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

import java.io.FileOutputStream;
import java.io.IOException;

public class Seal {
    public void addPdf() throws IOException, DocumentException {
        String srcPdf = "C:\\Users\\lenovo\\Desktop\\加水印.pdf";  // 原 PDF
        String destPdf = "C:\\Users\\lenovo\\Desktop\\加水印-小雪.pdf";   // 输出 PDF
        String sealImgPath = "C:\\Users\\lenovo\\Desktop\\公司公章.png"; // 印章图片

        // 1. 读入原 PDF
        PdfReader reader = new PdfReader(srcPdf);
        // 2. 用 PdfStamper 输出新 PDF
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(destPdf));

        // 3. 获取画布
        PdfContentByte over = stamper.getOverContent(1); // 第一页

        // 4. 加载印章图片
        Image image = Image.getInstance(sealImgPath);
        image.scaleAbsolute(100, 100); // 设置大小
        image.setAbsolutePosition(400, 100); // 在 PDF 中的位置 (x,y)

        // 5. 放到 PDF
        over.addImage(image);

        // 6. 创建签名域（可选，若要留个签名域）
        // iText5 手动创建签名域比较麻烦，通常在模板里预留好表单域再用 AcroFields.getFieldPositions 获取坐标。
        // 这里仅演示加图片。
        // stamper.addAnnotation(PdfFormField.createSignature(stamper.getWriter()), 1);

        // 7. 关闭
        stamper.close();
        reader.close();

        System.out.println("新PDF生成成功：" + destPdf);

    }


    public static void main(String[] args) {
        Seal seal = new Seal();
        try {
            seal.addPdf();
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        }
    }
}
